import type { BilibiliVideoElements } from '../../../../../../types/constants/personalization/bilibili_video'
import type { ThemeType } from '../../../../../../types/interfaces'
import { VideoThemeService } from '../../../../../../lib/abstract'
import {
  BODY_SELECTOR,
  PLATFORM_PAGE_TYPES,
  SUPPORTED_PLATFORMS,
} from '../../../../../../types/constants'

/**
 * 主题服务测试链接
 */
export class BilibiliVideoThemeService extends VideoThemeService {
  readonly name: string = 'BilibiliVideoTheme'
  readonly platformPageType: string = PLATFORM_PAGE_TYPES.VIDEO.value
  private static instance: BilibiliVideoThemeService
  declare readonly elements: BilibiliVideoElements
  readonly wrapperSelector: string = BODY_SELECTOR

  constructor() {
    super(SUPPORTED_PLATFORMS.BILIBILI_VIDEO)

    this.updateElementStylesForTheme()
  }

  /**
   * 获取单例实例
   */
  static getInstance(): BilibiliVideoThemeService {
    if (!BilibiliVideoThemeService.instance) {
      BilibiliVideoThemeService.instance = new BilibiliVideoThemeService()
    }
    return BilibiliVideoThemeService.instance
  }

  updateElementStylesForTheme(): void {
  }

  platformStyleVar(_theme: ThemeType): string {
    return ``
  }

  getBaseStyles(_theme: ThemeType): string {
    return ``
  }

  getPageStyles(_theme: ThemeType): string {
    return ``
  }

  getMainStyles(_theme: ThemeType): string {
    return ``
  }

  getPatchedStyles(_theme: ThemeType): string {
    return ``
  }

  getFixedStyles(_theme: ThemeType): string {
    return ``
  }
}
